package com.example.ibsp_demo.mapper.content;

import com.example.ibsp_demo.pojo.entity.content.Content;
import com.example.ibsp_demo.pojo.entity.content.ContentHotRank;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;

@Mapper
public interface ContentHotRankMapper {

    // 根据主键查询
    ContentHotRank selectByChid(Integer chid);

    // 根据内容ID查询热度排名
    ContentHotRank selectByCtid(Integer ctid);

    // 按统计周期查询热度排行（分页）
    List<ContentHotRank> selectByStatPeriod(Map<String, Object> params);

    // 查询热度前N的内容
    List<ContentHotRank> selectTopNByPeriod(Map<String, Object> params);

    // 插入或更新热度记录（适合定时计算热度）
    int insertOrUpdate(ContentHotRank rank);

    // 更新热度分数
    int updateHotScore(ContentHotRank rank);

    // 根据内容ID删除
    int deleteByCtid(Integer ctid);
    /**
     * 通过关键词查询，并按热度排序
     * @param keyword 搜索关键词
     * @return 匹配的热门帖子排行列表，按热度降序排列
     */
    List<ContentHotRank> selectByKeywordOrderByHotScore(@Param("keyword") String keyword);
    /*
    *
    * 获取热榜前N名
    *
    * */
    List<Content> selectHotContents(@Param("limit")  int limit);
}